/**
 * 需要订阅的消息模板，在微信公众平台手动配置获取模板ID
 * requestSubscribeMessage
 * @param {*}
 */
export const requestSubscribeMessage=(id)=>{
    return new Promise((resolve,reject)=>{
        try {
            let tmplId = 'LSxspuNVTeYOVS4ezti_HTaoH8cCw3iaX9CEik1iIKQ';
            wx.getSetting({
                withSubscriptions: true,//是否同时获取用户订阅消息的订阅状态，默认不获取
                success: async (res)=> {
                    if (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings &&
                        res.subscriptionsSetting.itemSettings[tmplId] == "reject"){
                        //打开设置去设置
                        // let show = await showModal('检测到您没打开推送权限，是否去设置打开？')
                        // if (show.cancel) {
                        //     openSetting();
                        // }
                        resolve(res);
                    }else {
                        wx.requestSubscribeMessage({
                            tmplIds: [tmplId],
                            success: (res)=> {
                                if(res['LSxspuNVTeYOVS4ezti_HTaoH8cCw3iaX9CEik1iIKQ'] != "reject"){
                                    let list = wx.getStorageSync('reminderOfExpiredList') || [];
                                    list.push(id);
                                    wx.setStorageSync('reminderOfExpiredList', list);
                                }
                                resolve(res);
                            },
                            fail: (res)=> { 
                                resolve(res);
                            }
                        })
                    }
                }
            })
        } catch (error) {// 当前微信版本不支持订阅信息
            console.error("subscribeMessage-err", error);
            resolve(error);
        }
    })
}
/**
 * 登录
 * promise 形式  login
 */
export const login=()=>{
    return new Promise((resolve,reject)=>{
      wx.login({
        timeout:10000,
        success: (result) => {
          resolve(result);
        },
        fail: (err) => {
          reject(err);
        }
      });
    })
}
/**
 * 弹框
 *  promise 形式  确认提示框showModal
 * @param {object} param0 参数
 */
export const showModal=(content)=>{
    return new Promise((resolve,reject)=>{
      wx.showModal({
        title: '提示',
        content: content,
        success :(res) =>{
          resolve(res);
        },
        fail:(err)=>{
          reject(err);
        }
      })
    })
}
/**
 * 小程序设置界面
 * promise 形式  openSetting
 */
export const openSetting=()=>{
    return new Promise((resolve,reject)=>{
      wx.openSetting({
        success: (result) => {
          resolve(result);
        },
        fail: (err) => {
          reject(err);
        }
      });
    })
}
/**
 * 下载文件
 * downloadFile
 * @param {*}
 */
export const downloadFile=(path)=>{
    return new Promise((resolve,reject)=>{
      wx.downloadFile({
        url: path,
        header: {
            "Content-Type": "*"
        },
        success(res) {
            // 只要服务器有响应数据，就会把响应内容写入文件并进入 success 回调，业务需要自行判断是否下载到了想要的内容
            if (res.statusCode === 200) {
              resolve(res.tempFilePath);
            }
        },
        fail: function (res) {
          resolve(false);
        },
        complete: () => {
            resolve(false);
        },
    });
    })
}
/**
 * 保存文件
 * saveFile
 * @param {*}
 */
export const saveFile=(path)=> {
    return new Promise((resolve,reject)=>{
        wx.saveFile({
            tempFilePath: path,
            success (res) {
              resolve(res.savedFilePath);
            }
         })
    })
}
/**
 * 保存图片到指定文件夹
 * save_photo
 * @param {*}
 */
export const save_photo=(src)=> {
    return new Promise((resolve,reject)=>{
        const fs = wx.getFileSystemManager()
        var isExist = false; //目录是否存在
        var that = this;
        // 同步接口
        try {
        fs.accessSync(`${wx.env.USER_DATA_PATH}/photoinvoice/1553115`)
        isExist = true;
        } catch (e) {
        // console.error(e)
        }
        if (isExist != true) {
        // 同步接口,创建目录
        try {
            fs.mkdirSync(`${wx.env.USER_DATA_PATH}/photoinvoice/1553115`, true)
        } catch (e) {
            console.error(e)
        }
        }
        console.log(src)
        wx.getImageInfo({
        src: src,
        success: function (res) {
            var path = res.path;
            console.log("path:" + path) //wxfile://te6786958409efjje46546i5.jpg
            //下面获取图片名te6786958409efjje46546i5.jpg
            var startPos = path.lastIndexOf("//");
            console.log(startPos)
            var picName = path.slice(startPos + 2, path.length); //加2是为了从//后面截取。所以+2，把//过滤掉
            console.log(picName)
            fs.saveFile({
            tempFilePath: path,
            filePath: `${wx.env.USER_DATA_PATH}/photoinvoice/1553115/${picName}`, //保存的时候必须跟上路径和文件名
            success: function (res) {
                console.log("保存成功")
                console.log(res)
            },
            fail: function (res) {
                console.log("保存失败")
                console.log(res)
            }
            })
    
        }
        })
    })
}
/**
 * 获取当前地点经纬度
 * promise 形式  getLocation
 */
export const getLocation=()=>{
    return new Promise((resolve,reject)=>{
      wx.getLocation({
          //获取位置信息
          type: "wgs84", //gcj02 wgs84
          success(position) {
            resolve(position);
          },
          fail: res => {
            resolve(res);
          }
      });
    });
}
/**
 * 打开小程序内置地图
 * saveFile
 * @param {*}
 */
export const openLocation=(data)=> {
    return new Promise((resolve,reject)=>{
        //百度经纬度转腾讯经纬度   
        // let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        // let x = longitude - 0.0065;
        // let y = latitude - 0.006;
        // let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
        // let wz = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
        // let lon = z * Math.cos(wz);
        // let lat = z * Math.sin(wz);
        // longitude=lon;
        // latitude=lat;
        wx.openLocation({
            latitude:Number(data.lat),
            longitude:Number(data.lng),
            name:data.terminalName,
            address:data.terminalAddress,
            scale: 18
        })
    })
}
/**
 * 判断是否有获取坐标权限
 * getSettingUserLocation
 * @param {*}
 */
export const getSettingUserLocation=()=> {
    return new Promise((resolve,reject)=>{
        wx.getSetting({
            success: (res) => {
                if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
                    //非初始化进入该页面,且未授权
                    wx.showModal({
                    title: '是否授权当前位置',
                    content: '为了保证正常获取奖励，现需获取您的地理位置',
                    success: function (res) {
                        if (res.cancel) {
                            wx.showToast({
                                title: '取消授权',
                                icon: 'none',
                                duration: 1000
                            })
                            resolve(false);
                        } else if (res.confirm) {
                            wx.openSetting({
                                success: function (dataAu) {
                                    if (dataAu.authSetting["scope.userLocation"] == true) {
                                        wx.showToast({
                                            title: '授权成功',
                                            icon: 'none',
                                            duration: 1000
                                        })
                                        //再次授权，调用getLocationt的API
                                        resolve(true);
                                    } else {
                                        wx.showToast({
                                            title: '授权失败',
                                            icon: 'none',
                                            duration: 1000
                                        })
                                        resolve(false);
                                    }
                                }
                            })
                        }
                    }
                })
                } else if (res.authSetting['scope.userLocation'] == undefined) {//初始化进入
                    resolve(true);
                }else { //授权后默认加载
                    resolve(true);
                }
            }
        })
    })
}
/**
 * 打开半屏小程序
 * promise 形式  openEmbeddedMiniProgram
 * 1、被半屏跳转的小程序需要通过来源小程序的调用申请，开发者可在 小程序管理后台「设置」-「第三方设置」-「半屏小程序管理」板块发起申请，最多可以申请10个小程序；
 * 2、2.23.1版本以下基础库，被半屏打开的小程序需要在app.json的embeddedAppIdList字段中声明；
 * 3、当前小程序需为竖屏；
 * 4、被半屏跳转的小程序需为非个人主体小程序（不含小游戏）。
 */
export const openEmbeddedMiniProgram=()=>{
	// "embeddedAppIdList": ["wxe5f52902cf4de896"]
    const platform = wx.getSystemInfoSync().platform
    if (platform !== 'android') {
        wx.showLoading({
            title: '打开小程序中',
            mask: true
        })
    }
    wx.openEmbeddedMiniProgram({
        // 要跳转的小程序的appid
        appId: 'wxe5f52902cf4de896',
        envVersion:'release',
        // path: `/pages/index/index?id=xxx`,
        success: (res) => {
            console.log('跳转小程序成功', res)
            let aa = wx.getEnterOptionsSync()
            console.info(aa);
        },
        fail: (error) => {
            console.log('跳转小程序失败', error)
        },
        complete: () => {
            wx.hideLoading()
        }
    })
}